/************************************************************************
 * 介绍类的几种访问限定符public/protected/private
 * 1、什么是访问限定符
 *    访问限定符限制了类成员变量/成员函数的访问范围，方便数据的封装
 * 2、为什么需要访问限定符
 *    尽可能对外显露最少的细节，尽可能封装数据和操作
 * 3、如何使用访问限定符
 *    类声明的时候使用public/protected/private修饰
 * 类的成员函数可以访问类的任何一个成员变量和成员函数
 * 访问限定符是限定外部对象对某些成员变量和成员函数的访问的。这一点非常重要
 * **********************************************************************/
#include "common.h"
using namespace std;

Base::Base()
{
    m_age = 0;
    m_high = 0;
    m_addr = nullptr;
    m_name = "";
}
Base::~Base()
{
    delete m_addr;
    m_addr = nullptr;
}
void Base::set_age(int age)
{
    m_age = age;
}

void Base::set_addr(char* addr)
{
    m_addr = new char[16];
    strcpy(m_addr, addr);
}

void Base::show_val(int age, int high, char* addr, string name)
{
    set_age(age);
    set_addr(addr);

    printf("age = %d\n", m_age);
    printf("high = %d\n", m_high);
    printf("addr = %s\n", m_addr);
    printf("m_name = %s\n", m_name);
}
int main()
{
    Base* ba = new Base;
    ba->show_val(18, 183, "chengdu", "wang");
    return 0;
}